package dao

import (
	"os"
	"runtime"
	"strings"

	"github.com/gogf/gf/os/glog"
)

const (
	ContentSpilt = "-----------------------" // 文件内容分割符
)

// GetJoinStrForPlatform 根据平台获取路径分隔符
func GetJoinStrForPlatform() string {
	if runtime.GOOS == "windows" {
		return "\\"
	}
	return "/"
}

// GetLineBreakForPlatform 根据平台获取换行符
func GetLineBreakForPlatform() string {
	switch runtime.GOOS {
	case "windows":
		return "\n\r"
		// case "darwin":
		// 	return "\r"
	}
	return "\n"
}

// GetCurProjectDir 获取当前项目路径
func GetCurProjectDir() string {
	return GetProjectDir("sentryservice")
}

// GetProjectDir 获取项目路径
func GetProjectDir(projectName string) string {
	dir, err := os.Getwd()
	if err != nil {
		glog.Error("os.Getwd is failed, err:", err)
		return ""
	}
	tmpIndex := strings.LastIndex(dir, projectName)
	return dir[:tmpIndex+len(projectName)]
}

// JoinPath 保存命名空间和路径
func JoinPath(namespace, path string) string {
	return namespace + "#" + path // 保存命名空间和项目名, 格式: demo_dev#test_server
}

// parsePath  解析命名空间和路径
// 不同的 src 下有可能出现相同的服务名(微服务), 此需要通过命名空间进行隔离, 格式: namespace#src
func ParsePath(in string) (namespace string, path string) {
	tmpIn := strings.Split(in, "#")
	if len(tmpIn) != 2 {
		return
	}
	namespace = tmpIn[0]
	path = tmpIn[1]
	return
}
